﻿#region Usings

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using XPressify.Data;

#endregion

namespace XPressify.Models
{
    public class AlbumListModel
    {
        public Guid Id { get; set; }
        public Guid SubjectId { get; set; }
        public string Name { get; set; }
        public int MediaCount { get; set; }
        public bool IsOwner { get; set; }
        public bool IsDeletable { get; set; }
        public string CoverPicturePath { get; set; }
        public string SubjectName { get; set; }
    }

    public class AlbumViewerListModel
    {
        public AlbumListModel[] Albums { get; set; }
        public bool IsAjaxRequest { get; set; }
        public Guid SubjectId { get; set; }
        public string SubjectName { get; set; }
        public short SubjectType { get; set; }
    }

    public class AlbumDetailsModel
    {
        public Guid Id { get; set; }
        public User Owner { get; set; }
        public User Viewer { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public string Location { get; set; }
        public UploadedFile[] AllFiles { get; set; }
        public bool IsOwner { get; set; }
        public DateTime Created { get; set; }
        public Guid AlbumPostDummyId { get; set; }
        public Post[] AllComments { get; set; }
        public string CurrentUserProfilePicturePath { get; set; }
        public string BaseSubjectName { get; set; }
        public Guid BaseSubjectId { get; set; }
        public Album Album { get; set; }
    }

    public class AlbumCreateModel
    {
        [Required]
        [Display(Name = "Name")]
        public string Name { get; set; }

        [Display(Name = "Description")]
        public string Description { get; set; }

        [Display(Name = "Location")]
        public string Location { get; set; }

        [Required]
        [Display(Name = "PrivacyType")]
        public short PrivacyType { get; set; }

        public string ControllerName { get; set; }

        public string ActionName { get; set; }

        public short MediaType { get; set; }

        public Guid Id { get; set; }
        public Guid UserId { get; set; }
    }

    public class AlbumCreateFinishModel
    {

        public UploadedFile[] UploadedFiles { get; set; }
    }

    public class AlbumUploadFileModel
    {
        public string ControllerName { get; set; }
        public string ActionName { get; set; }
        public Guid Id { get; set; }
        public Guid UserId { get; set; }
        public string FileExtension { get; set; }
        public bool SingleUpload { get; set; }
        public string SingleUploadDescription { get; set; }
        public Guid OwnerId { get; set; }
    }

    public class AlbumEditInfoModel
    {
        public Guid Id { get; set; }

        [Required]
        [Display(Name = "Name")]
        public string Name { get; set; }

        [Display(Name = "Description")]
        public string Description { get; set; }

        [Display(Name = "Location")]
        public string Location { get; set; }

        [Required]
        [Display(Name = "PrivacyType")]
        public short PrivacyType { get; set; }

    }

    public class AlbumEditPrivacyModel
    {
        public Guid Id { get; set; }

        [Display(Name = "Name")]
        public string Name { get; set; }

        [Display(Name = "Description")]
        public string Description { get; set; }

        [Display(Name = "Location")]
        public string Location { get; set; }

        [Required]
        [Display(Name = "PrivacyType")]
        public short PrivacyType { get; set; }

    }

    public class AlbumEditPhotoModel
    {
        public Guid Id { get; set; }
        public UploadedFileSelect[] UploadedFiles { get; set; }
        public Guid SelectedProfilePicture { get; set; }
        public Guid SelectedCoverPicture { get; set; }
        public bool HasCover { get; set; }
        public Guid CoverPicture { get; set; }
        public bool isProfileAlbum { get; set; }
        public bool isWallAlbum { get; set; }
        public string AlbumName { get; set; }
        public bool OwnerIsUser { get; set; }
    }

    public class AlbumDeleteModel
    {
        public string Name { get; set; }
        public string Description { get; set; }
        public string Location { get; set; }
        public DateTime Created { get; set; }

    }

    public class UploadedFileSelect
    {
        public Guid Id { get; set; }

        public string FullName { get; set; }

        [Required]
        public string Name { get; set; }

        public string Description { get; set; }

        public long Size { get; set; }

        public string Path { get; set; }

        public short MediaType { get; set; }

        public bool Selected { get; set; }

        public short PrivacyType { get; set; }

        public string FileExtension { get; set; }


    }

    public class ImageModel
    {
        public Guid Id { get; set; }
        public string PicturePath { get; set; }
        public string Description { get; set; }
    }

    public class ImageGalleryModel
    {
        public ImageModel[] Images { get; set; }
        public int IndexImage { get; set; }
        public Guid AlbumId { get; set; }
        public Album Album { get; set; }
        public Guid SubjectId { get; set; }
        public short SubjectType { get; set; }
        public string SubjectName { get; set; }
    }

    public class CommentsListModel
    {
        public Post PostDummy { get; set; }
        public Post[] Comments { get; set; }
        public string ProfilePicturePath { get; set; }
        public Guid CurrentUserId { get; set; }
        public bool IsOwner { get; set; }
        public DateTime Created { get; set; }
    }

    public class UploadProfileModel
    {
        public Guid ProfileAlbumId { get; set; }
    }

}